home *** CD-ROM | disk | FTP | other *** search
/ Cream of the Crop 26 / Cream of the Crop 26.iso / program / ddj0897.zip / DYN401.ZIP / class / pntrary.c < prev    next >
C/C++ Source or Header  |  1997-04-16  |  3KB  |  143 lines

  1.  
  2.  
  3. /*  Copyright (c) 1993-1996 Algorithms Corporation  */
  4. /*  All rights reserved.  */
  5.  
  6.  
  7.  
  8.  
  9. /*  This file automatically generated by dpp - do not edit  */
  10.  
  11. #define    DPP_STRATEGY    2
  12. #define    DPP_FASTWIDE    0
  13.  
  14.  
  15.  
  16. #line 17 "pntrary.d"
  17. #include "array1.h" 
  18.  
  19. #define    CLASS    PointerArray_c
  20. #define    ivType    PointerArray_iv_t
  21.  
  22. #include "generics.h"
  23.  
  24. object    PointerArray_c;
  25.  
  26.  
  27. #line 25 "pntrary.d"
  28. #define TYPE void * 
  29.  
  30.  
  31. static gIndex_t _index; 
  32.  
  33.  
  34. cvmeth objrtn PointerArray_cvm_vNew(object self, va_list _rest_)
  35.     unsigned rank = va_arg(_rest_, unsigned);
  36.  
  37. #line 33 "pntrary.d"
  38.     static gNewArray_t cnew = NULL; 
  39.     MAKE_REST(rank); 
  40.  
  41.     if (!cnew) 
  42.         cnew = cmcPointer(Array, gNewArray); 
  43.     return cnew(self, AT_PNTR, rank, _rest_); 
  44.  
  45. #line 48 "pntrary.c"
  46.  
  47. static    objrtn    PointerArray_cfm_vNew(object self, ...)
  48. {
  49.     va_list    _rest_;
  50.     va_start(_rest_, self);
  51.     return PointerArray_cvm_vNew(self, _rest_);
  52. }
  53.  
  54.  
  55.  
  56. #line 41 "pntrary.d"
  57. ivmeth void * PointerArray_ivm_vPointerValue(object self, va_list _rest_)
  58.     MAKE_REST(self); 
  59.     return *((TYPE *) _index(self, _rest_)); 
  60.  
  61. #line 66 "pntrary.c"
  62.  
  63. static    void *    PointerArray_ifm_vPointerValue(object self, ...)
  64. {
  65.     va_list    _rest_;
  66.     va_start(_rest_, self);
  67.     return PointerArray_ivm_vPointerValue(self, _rest_);
  68. }
  69.  
  70.  
  71.  
  72. #line 47 "pntrary.d"
  73. ivmeth objrtn PointerArray_ivm_vChangeValue(object self, va_list _rest_)
  74. { void * val = va_arg(_rest_, void *);
  75.     MAKE_REST(val); 
  76.     *((TYPE *) _index(self, _rest_)) = val; 
  77.     return self; 
  78.  
  79. #line 85 "pntrary.c"
  80.  
  81. static    objrtn    PointerArray_ifm_vChangeValue(object self, ...)
  82. {
  83.     va_list    _rest_;
  84.     va_start(_rest_, self);
  85.     return PointerArray_ivm_vChangeValue(self, _rest_);
  86. }
  87.  
  88.  
  89. #line 54 "pntrary.d"
  90. static void init_class(void) 
  91.     _index = imcPointer(Array, gIndex); 
  92.  
  93. #line 101 "pntrary.c"
  94.  
  95. objrtn    PointerArray_initialize(void)
  96. {
  97.     static  CRITICALSECTION  cs;
  98.     static  int volatile once = 0;
  99.  
  100.     ENTERCRITICALSECTION(_CI_CS_);
  101.     if (!once) {
  102.         INITIALIZECRITICALSECTION(cs);
  103.         once = 1;
  104.     }
  105.     LEAVECRITICALSECTION(_CI_CS_);
  106.  
  107.     ENTERCRITICALSECTION(cs);
  108.  
  109.     if (PointerArray_c) {
  110.         LEAVECRITICALSECTION(cs);
  111.         return PointerArray_c;
  112.     }
  113.     INHIBIT_THREADER;
  114.     Array_initialize();
  115.     if (PointerArray_c)  {
  116.         ENABLE_THREADER;
  117.         LEAVECRITICALSECTION(cs);
  118.         return PointerArray_c;
  119.     }
  120.     PointerArray_c = gNewClass(Class, "PointerArray", 0, 0, Array, END);
  121.     cvMethodFor(PointerArray, vNew, PointerArray_cvm_vNew, PointerArray_cfm_vNew);
  122.     ivMethodFor(PointerArray, vChangeValue, PointerArray_ivm_vChangeValue, PointerArray_ifm_vChangeValue);
  123.     ivMethodFor(PointerArray, vPointerValue, PointerArray_ivm_vPointerValue, PointerArray_ifm_vPointerValue);
  124.  
  125.     init_class();
  126.  
  127.     ENABLE_THREADER;
  128.  
  129.     LEAVECRITICALSECTION(cs);
  130.  
  131.     return PointerArray_c;
  132. }
  133.  
  134.  
  135.  
  136.